Setup a bedrock minecraft server with frp
基岩版frp开服教程。
准备
适用于 Ubuntu 的 Linux 服务器可以一般可以运行在其他发行版上。
-
下载 Minecraft 服务端文件 Minecraft 🔗
-
frp 客户端 (自行GitHub)
配置
配置文件
-
在下载文件夹中默认包含 bedrock_server_how_to.html ,这是官方手册,能解决部分配置问题。
-
阅读官方手册并配置 server.properties 文件 或者查看 Minecraft Wiki 中文教程: 架设基岩版服务器 🔗
-
为了使用 frp 可能需要将 transport 字段改为 raknet。
导入世界(可选)
需注意: 如果直接从游戏中导出世界可能存在导出者数据清空的情况 如:
导出者物品与经验消失驯服的宠物所有者不明等情况。
-
将 .mcworld 或 .zip 文件解压,并复制到 worlds 文件夹中。
-
更改文件夹名称为 server.properties 中 level-name 字段值 (或者更改 level-name 字段)
安全与服务(该部分systemctl命令适用于使用Systemd 的 Linux)
请注意:请勿直接将服务器搭建于公网上的设备,这可能使你的设备遭到攻击。
- frp 隧道可以增大安全性(请确保您选择了值得信任的服务)。
为服务器创建一个低级用户,并用该账户运行服务器
(* 请注意,如要使用低级用户,您需要转移权限,Linux可用:sudo chown -R %User name%:%Group name% %Path to your Server%)
sudo useradd -r -s %path to your favourite shell% -d %Path to user home% -m %User Name%
请替换带有 %% 的字段。
使用 Systemed 服务
- 创建服务文件
cd /etc/systemd/system/
touch %Service Name%.service
sudo nano /etc/systemd/system/%Service Name%.service
基础配置
填写以下内容 (* 该配置无法直接从终端输入命令!优化后配置请见下文)
[Unit]
Description=service description
After=network.target
[Service]
User=%User name%
Group=%Group%
WorkingDirectory=%Path to your server%
Environment=LD_LIBRARY_PATH=%Path to your server%
ExecStart=%Path to your server%/bedrock_server
# 失败时重启
Restart=on-failure
# 等待时间
RestartSec=10
# 限制服务权限
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
ReadWriteDirectories=%Path to your server%
[Install]
WantedBy=multi-user.targe
优化配置
请根据下方配置更改或新建字段,请勿直接 Ctrl C/V!
...
[Service]
Type=forking
ExecStart=/usr/bin/screen -dms %User name% %Path to your server%/bedrock_server
ExecStop=/usr/bin/bash %Path to your script.%
...
- ExecStop 脚本文件
适用于有一个基岩版服务器运行
#!/bin/bash
/usr/bin/screen -S %User name% -X stuff "stop\n"
for i in {1..60}; do
pgrep -f bedrock_server > /dev/null || exit 0
sleep 1
done
exit 1
常用管理命令
# 同步配置
sudo systemctl daemon-reload
# 开启自启动
sudo systemctl enable %Service name%
# 开启服务
sudo systemctl start %Service name%
# 停止服务 (* 请注意:如果使用标准配置停止为强制停止服务,可能会损坏存档!)
sudo systemctl stop %Service name%
# 检查服务状态
sudo systemctl status %Service name%
# 标准配置停止服务器 (* systemd 会在停止10秒后自动重启服务,需要再手动 systemctl stop)
sudo -u bemc screen -S %User name% -X stuff "stop\n"
# 连接到服务器终端控制台
sudo -u %User name% screen -r %Screen name%
游玩
本地测试
- 打开 Minecraft 点击 Play 在服务器一栏点击 + 添加服务器,填入 server.properties 中的 ip (未填写见下文) 与 port
默认 server.properties 不填写特定 ip 即为监听全部。 Linux 可用 ifconfig 查看并找到当前与测试设备相同的网络ip,Windows 可用 ipconfig。
若提示无法加入请检查 server.properties 中 allowlist 状态,或 连接到服务器终端控制台(命令见上文) 输入 allowlist off (* 注意,这会允许可加入的所有人加入您的游戏 了解更多:allowlist - Wiki 🔗)
连接 Frp
- 在 Frp 配置界面中 将 type 改为 udp,并填写相应字段
如果无法连接,将 service.properties transport 字段改为 raknet。